#ifndef _MIPS_REGDEF_H_
#define _MIPS_REGDEF_H_

// 定义MIPS架构中的寄存器常量
#define zero	$0	/* 永远为零寄存器 */
#define AT	$at	/* 汇编器临时寄存器 */
#define v0	$2	/* 返回值寄存器 */
#define v1	$3	/* 额外返回值寄存器 */
#define a0	$4	/* 参数寄存器 */
#define a1	$5	/* 额外参数寄存器 */
#define a2	$6	/* 额外参数寄存器 */
#define a3	$7	/* 额外参数寄存器 */
#define t0	$8	/* 临时寄存器（不跨子程序调用保存） */
#define t1	$9	/* 临时寄存器 */
#define t2	$10	/* 临时寄存器 */
#define t3	$11	/* 临时寄存器 */
#define t4	$12	/* 临时寄存器 */
#define t5	$13	/* 临时寄存器 */
#define t6	$14	/* 临时寄存器 */
#define t7	$15	/* 临时寄存器 */
#define s0	$16	/* 状态保存寄存器（跨子程序调用保存） */
#define s1	$17	/* 状态保存寄存器 */
#define s2	$18	/* 状态保存寄存器 */
#define s3	$19	/* 状态保存寄存器 */
#define s4	$20	/* 状态保存寄存器 */
#define s5	$21	/* 状态保存寄存器 */
#define s6	$22	/* 状态保存寄存器 */
#define s7	$23	/* 状态保存寄存器 */
#define t8	$24	/* 另外两个临时寄存器 */
#define t9	$25	/* 另外一个临时寄存器 */
#define k0	$26	/* 内核临时寄存器 */
#define k1	$27	/* 另外一个内核临时寄存器 */
#define gp	$28	/* 全局指针寄存器 */
#define sp	$29	/* 栈指针寄存器 */
#define s8	$30	/* 另一个状态保存寄存器 */
#define ra	$31	/* 返回地址寄存器 */
#define fp	$30	/* 帧指针寄存器（在此处与s8重定义） */

// 定义MIPS协处理器0（CP0）的寄存器常量
#define c0_index $0	/* CP0索引寄存器 */
#define c0_random $1	/* CP0随机数寄存器 */
#define c0_entrylo0 $2	/* CP0 入口低地址寄存器0 */
#define c0_entrylo1 $3	/* CP0 入口低地址寄存器1 */
#define c0_conf $3	/* CP0 配置寄存器 */
#define c0_context $4	/* CP0 上下文寄存器 */
#define c0_pagemask $5	/* CP0 页掩码寄存器 */
#define c0_wired $6	/* CP0 固定页面寄存器 */
#define c0_info $7	/* CP0 信息寄存器 */
#define c0_badvaddr $8	/* CP0 无效地址寄存器 */
#define c0_count $9	/* CP0 计数寄存器 */
#define c0_entryhi $10	/* CP0 入口高地址寄存器 */
#define c0_compare $11	/* CP0 比较寄存器 */
#define c0_status $12	/* CP0 状态寄存器 */
#define c0_cause $13	/* CP0 原因寄存器 */
#define c0_epc $14	/* CP0 异常程序计数器 */
#define c0_prid $15	/* CP0 处理器 ID 寄存器 */
#define c0_ebase $15, 1	/* CP0 异常基地址寄存器 */
#define c0_config $16	/* CP0 配置寄存器 */
#define c0_lladdr $17	/* CP0 负载链接地址寄存器 */
#define c0_watchlo $18	/* CP0 观察点低地址寄存器 */
#define c0_watchhi $19	/* CP0 观察点高地址寄存器 */
#define c0_xcontext $20	/* CP0 扩展上下文寄存器 */
#define c0_framemask $21	/* CP0 框掩码寄存器 */
#define c0_diagnostic $22	/* CP0 诊断寄存器 */
#define c0_debug $23	/* CP0 调试寄存器 */
#define c0_depc $24	/* CP0 数据和控制寄存器 */
#define c0_performance $25	/* CP0 性能监控寄存器 */
#define c0_ecc $26	/* CP0 错误纠正码寄存器 */
#define c0_cacheerr $27	/* CP0 缓存错误寄存器 */
#define c0_taglo $28	/* CP0 标签低地址寄存器 */
#define c0_taghi $29	/* CP0 标签高地址寄存器 */
#define c0_errorepc $30	/* CP0 错误返回程序计数器寄存器 */
#define c0_desave $31	/* CP0 延迟保存寄存器 */

#endif /* !_MIPS_REGDEF_H_ */
